import core from '@/core/'
/**
 * 组件信息以及处理
 */
module.exports = {
	/**
	 * 组件的节点信息
	 * @param {String} select 组件id是#id；组件class是.class
	 * @param {String} type 要获取的类型
	 * 
	 * 支付宝小程序不支持 in(component)，使用无效果
	 * https://uniapp.dcloud.net.cn/api/ui/nodes-info.html#nodesrefboundingclientrect
	 * getCurrentInstance该方法不存在
	 */
	query(select, instance, type = 'boundingClientRect') {
		return new Promise((resolve, reject) => {
			if (!instance) {
				instance = getCurrentPages()
				if (instance.length > 0) {
					instance = instance.pop()
					if (instance.$vm) {
						instance = instance.$vm
					}
				}
			}
			if (instance) { // 使用该方法一般需要延迟，直接this.$nextTick不行
				core.delayAction(() => {
					var action = uni.createSelectorQuery().in(instance)
					action = action.select(select)
					if (action && action[type]) {
						action[type]((data) => {
							if (data) {
								resolve(data)
							} else {
								reject()
							}
						}).exec()
					} else {
						reject()
					}
				}, 100)
			} else {
				reject()
			}
		})
	}
}